// pages/community/index.js
Page({
    data: {
      posts: [],         // 原始帖子数据
      sortedPosts: [],   // 排序后的帖子数据
      total: 0,          // 总帖子数
      page: 1,           // 当前页码
      pageSize: 10,      // 每页数量
      isLoading: false,  // 加载状态
      isLogin: false,    // 登录状态
      sortType: 'like',  // 排序类型: like/comment/time
      sortDirection: 'desc', // 排序方向: asc/desc
      sortMap: {         // 排序字段映射
        like: 'likes',
        comment: 'comments',
        time: 'createTime'
      }
    },
  
    onLoad(options) {
      // 检查登录状态
      this.checkLoginStatus();
      
      // 加载帖子列表
      this.loadPosts();
    },
  
    onShow() {
      // 页面显示时重新加载帖子（如果有新帖子）
      if (this.data.isLogin) {
        this.loadPosts(true);
      }
    },
  
    // 检查登录状态
    checkLoginStatus() {
      const isLogin = wx.getStorageSync('isLoggedIn');
      this.setData({ isLogin });
    },
  
    // 加载帖子列表
    loadPosts(refresh = false) {
      if (refresh) {
        this.setData({ page: 1 });
      }
      
      if (this.data.isLoading) return;
      
      this.setData({ isLoading: true });
      
      wx.cloud.callFunction({
        name: 'getCommunityPosts',
        data: {
          page: this.data.page,
          pageSize: this.data.pageSize,
          sortField: this.data.sortType,  // 注意：这里使用sortField参数
          sortDirection: this.data.sortDirection,
        }
      }).then(res => {
        this.setData({ isLoading: false });
        console.log(res);
        if (res.result && res.result.success) {
          const { posts, total, page } = res.result.data;
          // 加载更多时拼接数据，刷新时直接替换
          const newPosts = refresh ? posts : [...this.data.posts, ...posts];
          // 直接使用云函数返回的排序结果
          this.setData({
            posts: newPosts,
            sortedPosts: newPosts,
            total,
            page: page + 1
          });
        }
      }).catch(err => {
        this.setData({ isLoading: false });
        console.error('加载帖子失败', err);
        wx.showToast({
          title: '加载失败',
          icon: 'none'
        });
      });
    },
  
    // 切换排序方式
    changeSortType(e) {
      const sortType = e.currentTarget.dataset.type;
      let sortDirection = 'desc';
      
      // 点击相同类型时切换排序方向
      if (this.data.sortType === sortType) {
        sortDirection = this.data.sortDirection === 'desc' ? 'asc' : 'desc';
      }
      
      this.setData({
        sortType,
        sortDirection
      });
      
      // 重新加载帖子（带新的排序参数）
      this.loadPosts(true);
    },
     // 添加滚动到底部的处理函数
     onScrollToLower() {
      // 当滚动到底部时自动加载更多
      this.loadMore();
  },
    // 加载更多
    loadMore() {
      if (this.data.isLoading) return; // 如果正在加载中，不重复加载
        if (this.data.posts.length >= this.data.total) {
            wx.showToast({
                title: '已经到底啦',
                icon: 'none',
                duration: 1000
            });
            return;
        }
      
      this.loadPosts();
    },
  
    // 前往帖子详情页
    goToPostDetail(e) {
      const postId = e.currentTarget.dataset.postid;
      wx.navigateTo({
        url: `/pages/postDetails/index?postId=${postId}`
      });
    },
  
    // 前往发帖页
    goToPublishPost() {
      if (!this.data.isLogin) {
        wx.showModal({
          title: '提示',
          content: '请先登录才能发帖',
          success: (res) => {
            if (res.confirm) {
              wx.navigateTo({
                url: '/pages/login/login'
              });
            }
          }
        });
        return;
      }
      
      wx.navigateTo({
        url: '/pages/postAdd/index'
      });
    }
  });